#include "reg_mod_medico.h"
#include "ui_reg_mod_medico.h"
#include <Utils/Utils.h>
#include <QToolTip>
//borrar
Reg_Mod_Medico::Reg_Mod_Medico(QWidget *parent, Medico *med) :
    QDialog(parent),
    ui(new Ui::Reg_Mod_Medico)
{
    ui->setupUi(this);

    //No abrir una ventana nueva en la barra de inicio
    //Incluir las librerias <QStyle> <QDesktopWidget>
   this->setWindowFlags(Qt::Tool);
    this->setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, this->size(), qApp->desktop()->availableGeometry()));

    esModificacion = false;
    validator = new QIntValidator(1, 99999999);
    ui->telefono->setInputMask("999#-999-999");
    ui->registro->setValidator(validator);
    ui->cedula->setValidator(validator);
    this->setFixedSize(this->size());
    QDjangoQuerySet<Especialidad> esp;
    if(esp.count() > 0){

        foreach(const Especialidad &espec, esp) {
            ui->especialidad->addItem(espec.getDescripcion());
        }
    }


//En caso de modificar un medico

        if(med != NULL){

            this->setWindowTitle("Modificar Medico");
            QDjango::setDebugEnabled(true);
            this->setWindowTitle("Modificar Medico");
            esModificacion = true;
            ui->registro->setText(QString::number(med->getNum_registro()));
            ui->cedula->setText(QString::number(med->getCedula()));
            ui->nombre->setText(med->getNombre());
            ui->apellido->setText(med->getApellido());
            ui->telefono->setText(med->getTelefono());
            ui->correo->setText(med->getCorreo());
            ui->sexo->setCurrentText(med->getSexo());
            ui->direccion->setText(med->getDireccion());
            ui->especialidad->setCurrentText(med->getEspecialidad()->getDescripcion());
            ui->Aceptar->setFocus();
            med->deleteLater();
        }
        else this->setWindowTitle("Registrar Medico");

}



Reg_Mod_Medico::~Reg_Mod_Medico()
{
    delete validator;
}

void Reg_Mod_Medico::on_Aceptar_clicked()
{

    if(ui->registro->text().simplified() == "" || ui->cedula->text().simplified() == "" || ui->nombre->text().simplified() == "" || ui->apellido->text().simplified() == ""){

        if(ui->registro->text().simplified() == "") {
            ui->registro->setFocus();
            QToolTip::showText(ui->registro->mapToGlobal(QPoint(10,8)), "Campo Obligatorio");
        }
        else if(ui->cedula->text().simplified() == ""){
            ui->cedula->setFocus();
            QToolTip::showText(ui->cedula->mapToGlobal(QPoint(10,8)), "Campo Obligatorio");
        }
        else if(ui->nombre->text().simplified() == ""){
            ui->nombre->setFocus();
            QToolTip::showText(ui->nombre->mapToGlobal(QPoint(10,8)), "Campo Obligatorio");
        }
        else if(ui->apellido->text().simplified() == ""){
            ui->apellido->setFocus();
            QToolTip::showText(ui->apellido->mapToGlobal(QPoint(10,8)), "Campo Obligatorio");
        }

    }


    else if(ui->especialidad->currentText() == "" &&  !ui->otraEsp->isChecked()) cuadroMensaje("Debe especificar una especialidad", "");

    else if(ui->otraEsp->isChecked() && ui->nuevaEsp->text().simplified() == "") cuadroMensaje("<p align=center>Debe especificar una nueva especialidad o desmarcar la opcion 'otra especialidad'</p>", "");

    else{
        if(!esModificacion && existeEnLaBD("medico", "num_registro", ui->registro->text()))
        {
            int resp = 0;
            QDjangoQuerySet<Medico> medicos;
            Medico *medTemp = medicos.filter(QDjangoWhere("num_registro", QDjangoWhere::Equals, ui->registro->text().toInt())).at(0);

            if(medTemp->getEstado() == "inactivo"){
                resp = cuadroMensaje("", "El medico se encuentra como inactivo en la base de datos\nDesea volver a ponerlo activo?", "pregunta");
                if(resp == QMessageBox::Ok){
                    medTemp->setEstado("activo");
                    medTemp->save();
                    this->close();
                }
            }
            else cuadroMensaje("Error en el Registro", "Ya se encuentra registrado un medico con ese nº de registro", "error");
            delete medTemp;
        }
        else
        {

        QDjango::setDebugEnabled(true);

        QDjangoQuerySet<Especialidad> esp;
        esp.filter(QDjangoWhere("nombre", QDjangoWhere::Equals, ui->especialidad->currentText()));

        Medico *med = new Medico();
        med->setNum_registro(ui->registro->text().simplified().toInt());
        med->setCedula(ui->cedula->text().simplified().toInt());
        med->setNombre(ui->nombre->text().simplified());
        med->setApellido(ui->apellido->text().simplified());
        med->setCorreo(ui->correo->text().simplified());
        med->setDireccion(ui->direccion->text().simplified());
        med->setSexo(ui->sexo->currentText().simplified());
        med->setEstado("activo");

        if(ui->otraEsp->isChecked()){
            Especialidad *es = new Especialidad(ui->nuevaEsp->text().simplified());
            es->save();
            med->setEspecialidad(es);
            delete es;
        }
        else med->setEspecialidad(esp.at(0));
        med->setTelefono(ui->telefono->text().simplified());
        med->save();
        delete med;
        this->close();
        }
      }
}


void Reg_Mod_Medico::on_Cancelar_clicked()
{
    this->close();
}
